/**
  ******************************************************************************
  * @file           : wizchipbsp.h
  * @brief          : Header for main.c file.
  *                   This file contains the common defines of the application.
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */
#ifndef __WIZCHIPBSP_H
#define __WIZCHIPBSP_H

#include "bsp.h"

#define ETH_SPI                SPI4
#define ETH_SPI_IRQn           SPI4_IRQn

#define ETH_SCK_Pin            LL_GPIO_PIN_2
#define ETH_SCK_GPIO_Port      GPIOE
#define ETH_MISO_Pin           LL_GPIO_PIN_5
#define ETH_MISO_GPIO_Port     GPIOE
#define ETH_MOSI_Pin           LL_GPIO_PIN_6
#define ETH_MOSI_GPIO_Port     GPIOE

#define ETH_CS_Pin             GPIO_PIN_3
#define ETH_CS_LL_Pin          LL_GPIO_PIN_3
#define ETH_CS_GPIO_Port       GPIOE
#define eth_cs_select()        (ETH_CS_GPIO_Port->BSRR = ((uint32_t)ETH_CS_Pin << 16U))
#define eth_cs_deselect()      (ETH_CS_GPIO_Port->BSRR = (uint32_t)ETH_CS_Pin)

#define ETH_RST_Pin            GPIO_PIN_4
#define ETH_RST_LL_Pin         LL_GPIO_PIN_4
#define ETH_RST_GPIO_Port      GPIOB
#define eth_hard_reset(x)      x?(ETH_RST_GPIO_Port->BSRR = (uint32_t)ETH_RST_Pin):(ETH_RST_GPIO_Port->BSRR = ((uint32_t)ETH_RST_Pin << 16U))

#define ETH_INT_Pin            GPIO_PIN_5
#define ETH_INT_LL_Pin         LL_GPIO_PIN_5
#define ETH_INT_GPIO_Port      GPIOB
#define ETH_INT_EXTI_IRQn      EXTI9_5_IRQn

extern void wizchip_spi_init(void);
extern void wizchip_ping_reset(void);

#endif /* __WIZCHIPBSP_H */
